package com.deliccio.controller;

import java.util.List;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.deliccio.entitys.Cliente;
import com.deliccio.entitys.Menu;
import com.deliccio.entitys.Parametros;
import com.deliccio.entitys.Producto;
import com.deliccio.entitys.Ubicacion;
import com.deliccio.entitys.Usuario;
import com.deliccio.service.PedidosMobileService;
import com.deliccio.service.PedidosService;
import com.deliccio.service.PrincipalService;
import com.deliccio.util.Constantes;

@Controller
@RequestMapping("/pedidos")
public class DeliveryController{

	private static Logger log=Logger.getLogger(DeliveryController.class);

	@Autowired
	private PrincipalService principalService;

	@Autowired
	private PedidosService pedidosService;

	
	@RequestMapping(method=RequestMethod.GET)
	public String obtenerPedido(@RequestParam(required=false) Integer inter,Model model,HttpSession session){
		Usuario usuario=(Usuario) session.getAttribute(Constantes.SESION_USUARIO);
		Cliente cliente=(Cliente) session.getAttribute(Constantes.SESION_CLIENTE);
		List<Menu> menus=null;
		if(usuario != null){		
			session.setAttribute(Constantes.SESION_USUARIO,usuario);
			menus=principalService.obtenerMenusUsuario(usuario);
		}
		else if(cliente != null){
			session.setAttribute(Constantes.SESION_CLIENTE,cliente);
			menus=principalService.obtenerMenusCliente(cliente);
		}
		if(usuario == null && cliente == null){
			menus=principalService.obtenerMenus();
		}
		if(menus != null){
			model.addAttribute("menus",menus);
		}
		session.setAttribute(Constantes.SESION_COD_INTER,inter);		
		List<Parametros> parametros =	pedidosService.obtenerTiposProducto();
		model.addAttribute("parametros",parametros);
		List<Producto> lstProductos=pedidosService.obtenerProductos();
		model.addAttribute("lstProductos",lstProductos);
		List<Ubicacion> lstUbicaciones = pedidosService.obtenerUbicacionesSucursales();
		System.out.println("lstUbicaciones:"+lstUbicaciones);
		
		model.addAttribute("lstUbicaciones",lstUbicaciones);
		model.addAttribute("cliente",cliente);
		return "pedidos/pedidos";
	}
	
	@RequestMapping(value="/delivery",method=RequestMethod.POST)
	public @ResponseBody  int pedido(int[] productos, int[] cantidad,Cliente cliente,String latitud , String longitud){
		try{
			Ubicacion ubicacion=new Ubicacion(longitud,latitud);
			return pedidosService.realizarDelivery(productos,cantidad,null,0,cliente.getId(),ubicacion);
		}
		catch(Exception e){
			e.printStackTrace();
			return -1;
		}
		
	}
	
	
	
	
	
	
	
}
